// pages/car/car.js
const fetchSev = require("../../utils/util.js").fetchSev;
const cartListUrl = require("../../config.js").cartListUrl;
const deleteCartUrl = require("../../config.js").deleteCartUrl;

const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    cartList: [],
    totalWeight: 0, // 总重量
    totalNum: 0,    // 总数量
    isAll: false,   // 是否全选
    checkedIds: [],  // 用户选中的订单列表
    isEdit: false,   // 是否是编辑状态
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log('onload')
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this._pageRefresh();
  },
  // 刷新页面
  _pageRefresh: function() {
    console.log('页面刷新');
    // 清空全局的已选中商品列表
    app.globalData.checkedCartList = [];
    // 刷新数据
    this.setData({ totalWeight: 0 });
    this.setData({ totalNum: 0 });
    this.setData({ isAll: false });
    this.setData({ checkedIds: [] });
    this.setData({ isEdit: false });

    // 获取购物车列表
    this._getCartList();
  },

  // 获取购物车列表
  _getCartList: function() {
    fetchSev(cartListUrl, 'GET', { pagesize: 10000, page: 1 }, function (data) {
      console.log(data);
      // 数据处理
      const arr = data.data || [];
      arr.map((ele, index, arr) => {
        ele['checked'] = false;
      });
      this.setData({ cartList: arr });
    }.bind(this));
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    console.log('卸载');
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  },



  // 1-checkgroup
  _chkGroupChange: function(e) {
    console.log(e)

    // 1-更改选中的id数组
    const values = e.detail.value;  // 选中的id数组
    this.setData({ checkedIds: values });

    // 2-切换“全选”状态
    if (values.length == this.data.cartList.length) {
      this.setData({isAll: true});
    } else {
      this.setData({isAll: false});
    }
    
    // 3-更新cartList中的checked状态
    this.updateCheckedOfCartList(values);
    // 4-更新重量合计
    this.updateTotalWeight(this.data.checkedIds);
  },

  // 1-全选
  _checkAll: function(e) {
    console.log(e)
    // 1-更改“全选”状态
    const isAll = e.detail.value.length;
    isAll ? this.setData({isAll: true}) : this.setData({isAll: false});

    // 2-更改"全选状态"，更改选中的id数组
    if (isAll) {
      this.setData({ isAll: true });
      let temIdArr = [];
      this.data.cartList.map((ele, idx, arr) => {
        temIdArr.push(ele.id);
      });
      this.setData({ checkedIds: temIdArr });
    } else {
      this.setData({ isAll: false });
      this.setData({ checkedIds: []});
    }

    // 3-更改cartList的checked状态
    this.updateCheckedOfCartList(this.data.checkedIds);
    // 4-更新重量合计
    this.updateTotalWeight(this.data.checkedIds);
  },

  /**
   * 功能：删除商品
   */
  // 点击“编辑”
  _editClick: function() {
    let flag = this.data.isEdit;
    flag ? this.setData({isEdit: false}) : this.setData({isEdit: true});
    console.log(this.data.isEdit);
  },
  // 删除一个商品
  _deleteItem: function(e) {
    console.log();
    const itemId = e.currentTarget.dataset.id;
    const data = {
      products: [{id: itemId}]
    }
    console.log(data)
    fetchSev(deleteCartUrl, "POST", data, function(res) {
      // 删除成功后刷新购物车
      this._pageRefresh();
    }.bind(this));
  },

  // 1-减
  _numSub: function(e) {
    const id = e.target.dataset.id;
    // 更改购买数量
    this.updateNumOfCartList(id, 'sub');
    // 更新重量合计
    this.updateTotalWeight(this.data.checkedIds);
  },

  // 2-加
  _numAdd: function(e) {
    const id = e.target.dataset.id;
    // 更改购买数量
    this.updateNumOfCartList(id, 'add');
    // 更新重量合计
    this.updateTotalWeight(this.data.checkedIds);
  },
  
  // 3-确认订单
  _confirm: function() {
    console.log(this.data.checkedIds);
    let temArr = [];
    this.data.cartList.map((ele, idx, arr)=> {
      if (ele.checked) {
        temArr.push(ele);
      }
    });
    app.globalData.checkedCartList = temArr;
    app.globalData.totalWeight = this.data.totalWeight;
    app.globalData.totalNum = this.data.totalNum;
    
    console.log('选中的购物车', temArr);
    // 提交前验证
    if (this.data.checkedIds.length == 0) {
      wx.showToast({
        title: '订单不能为空',
        icon: 'none'
      })
      return;
    }
    wx.navigateTo({
      url: '../order/order'
    })
  },




  // 工具1：更改cartList的num
  updateNumOfCartList: function(id, type) {
    const arr = this.data.cartList;
    for (let i = 0; i < arr.length; i++) {
      if (id == arr[i].id) {
        if (type == 'sub') {
          // 购买数量不能小于0
          if (parseInt(arr[i].num) <= 0) break;
          arr[i].num = parseInt(arr[i].num) - 1;
        } else if (type == 'add') {
          arr[i].num = parseInt(arr[i].num) + 1;
        }
        break;
      }
    }
    console.log(arr);
    this.setData({cartList: arr});
  },
  // 工具2：根据选中的checkedIds更改cartList的checked
  updateCheckedOfCartList: function(idArr) {
    const arr = this.data.cartList;
    arr.map((ele, idx, arr)=> {
      ele.checked = false;
      for (let i=0; i<idArr.length; i++) {
        if (idArr[i] == ele.id) {
          ele.checked = true;
          break;
        }
      }
    })
    // 更新checked属性值
    this.setData({cartList: arr});
  },

  // 工具3：更新重量合计和数量合计
  updateTotalWeight: function(idArr){
    const arr = this.data.cartList;
    let totalWeight = 0;
    let totalNum = 0;
    arr.map((ele, idx, arr) => {
      for (let i = 0; i < idArr.length; i++) {
        if (idArr[i] == ele.id) {
          // 计算重量合计
          const minWeight = parseInt(ele.num) * parseFloat(ele.min_weight);
          const maxWeight = parseInt(ele.num) * parseFloat(ele.max_weight);
          totalWeight = totalWeight + (minWeight + maxWeight) / 2;
          totalNum = totalNum + parseInt(ele.num);
          break;
        }
      }
    })
    // 更新重量合计
    this.setData({ totalWeight: totalWeight });
    // 更新数量合计
    this.setData({ totalNum: totalNum});
  }
})